#ifndef MOZG
#define MOZG
#include <fstream>
#include <queue>
#include "sektor.h"
class General;
class MetalMap;
class Prokop;
class baza;
class oddzial;
class sektor;
class jednostka;
class fabrInfo;
class mozg
{
public:
//czesci skladowe
	bool arm;
	int druzyna;
	bool maNamierzarke;
	General * ge;
	vector<baza> bazy;
    IAICallback * cb; 
	int comID;
	unsigned int faza;
	map<fabrInfo,int> fabryki;
    TTAICore * G;
	gunshipy brawlerowcy;
	int ileZwiad;
	//vector<jednostka> jednostki;
	noli<jednostka> * je;
	noli<const UnitDef *> * katalog;
	huty kombinat;
	string kons(string fab);
	mordulce oddzialAtk;
	bool posz;
	float3 punktStartu; // "punktStartu" means "startPosition"
	sektor sek[64];
	silosiki silosy;
	zwiadowcy skauci;
	queue<string> zamowienia; //this is queue, which contains orders for units; this units will be build as soon as possible
//funkcje
	mozg(IAICallback *callback,TTAICore *Gl);
	~mozg();
	bool dajNajblizszyProjekt(int id,float dist);
	void dajNr();
	float odlPunktow(float3 a, float3 b, int tryb=0);
	bool budujMexa(budowlancy * bb);
	void jednostkaBezrobotna (int id, const UnitDef * def);
	void jednostkaZamordowana (int id, const UnitDef * def);
	void jednostkaZrobiona (int id, const UnitDef * def);
	jednostka * ktoTo (int id);
	int ktorySektor(float3 pos);
	int dawajPlamke(int uid);
	void nowaJednostka (int id, const UnitDef * def);
	int poz (int id);
	bool ruszZwiadowca (jednostka * zz); //jak zwiadowca, nie mylic z tamtym fotelem!
	void stworzBaze (int sektor, int priorytet, string name);
	void update() {};
	void hutoCzuwacz();
	string wybierzBudynek (budowlancy * nasi);
	string WybierzZaawProj(int unit);

};
class fabrInfo
{
public:
	
    TTAICore * G;
	const UnitDef * uuk;
	int id;
	baza * ktoras; 
	fabrInfo(TTAICore * H, int iid);
};

#endif // MOZG